home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 2 / AACD 2.iso / AACD / Magazine / ActiveShareware / PureBasic_Demo / Compilers / Extras_ppcmacros.pasm < prev    next >
Text File  |  1999-09-12  |  6KB  |  174 lines

  1.  
  2. #
  3. # WarpOS PowerPC.library support for pasm
  4. #
  5. # Convertion by AlphaSOUND - Fantaisie Software
  6. #
  7.  
  8. .ifndef  ALPHASND_USEFULSTUFFS_I
  9. .set     ALPHASND_USEFULSTUFFS_I,1
  10.  
  11. .set _LVORun68K              ,       -300
  12. .set _LVOWaitFor68K          ,       -306
  13. .set _LVOSPrintF             ,       -312
  14. .set _LVORun68KLowLevel      ,       -318    #PRIVATE!
  15. .set _LVOAllocVecPPC         ,       -324
  16. .set _LVOFreeVecPPC          ,       -330
  17. .set _LVOCreateTaskPPC       ,       -336
  18. .set _LVODeleteTaskPPC       ,       -342
  19. .set _LVOFindTaskPPC         ,       -348
  20. .set _LVOInitSemaphorePPC    ,       -354
  21. .set _LVOFreeSemaphorePPC    ,       -360
  22. .set _LVOAddSemaphorePPC     ,       -366
  23. .set _LVORemSemaphorePPC     ,       -372
  24. .set _LVOObtainSemaphorePPC  ,       -378
  25. .set _LVOAttemptSemaphorePPC ,       -384
  26. .set _LVOReleaseSemaphorePPC ,       -390
  27. .set _LVOFindSemaphorePPC    ,       -396
  28. .set _LVOInsertPPC           ,       -402
  29. .set _LVOAddHeadPPC          ,       -408
  30. .set _LVOAddTailPPC          ,       -414
  31. .set _LVORemovePPC           ,       -420
  32. .set _LVORemHeadPPC          ,       -426
  33. .set _LVORemTailPPC          ,       -432
  34. .set _LVOEnqueuePPC          ,       -438
  35. .set _LVOFindNamePPC         ,       -444
  36. .set _LVOFindTagItemPPC      ,       -450
  37. .set _LVOGetTagDataPPC       ,       -456
  38. .set _LVONextTagItemPPC      ,       -462
  39. .set _LVOAllocSignalPPC      ,       -468
  40. .set _LVOFreeSignalPPC       ,       -474
  41. .set _LVOSetSignalPPC        ,       -480
  42. .set _LVOSignalPPC           ,       -486
  43. .set _LVOWaitPPC             ,       -492
  44. .set _LVOSetTaskPriPPC       ,       -498
  45. .set _LVOSignal68K           ,       -504
  46. .set _LVOSetCache            ,       -510
  47. .set _LVOSetExcHandler       ,       -516
  48. .set _LVORemExcHandler       ,       -522
  49. .set _LVOSuper               ,       -528
  50. .set _LVOUser                ,       -534
  51. .set _LVOSetHardware         ,       -540
  52. .set _LVOModifyFPExc         ,       -546
  53. .set _LVOWaitTime            ,       -552
  54. .set _LVOChangeStack         ,       -558    # PRIVATE!
  55. .set _LVOLockTaskList        ,       -564
  56. .set _LVOUnLockTaskList      ,       -570
  57. .set _LVOSetExcMMU           ,       -576
  58. .set _LVOClearExcMMU         ,       -582
  59. .set _LVOChangeMMU           ,       -588
  60. .set _LVOGetInfo             ,       -594
  61. .set _LVOCreateMsgPortPPC    ,       -600
  62. .set _LVODeleteMsgPortPPC    ,       -606
  63. .set _LVOAddPortPPC          ,       -612
  64. .set _LVORemPortPPC          ,       -618
  65. .set _LVOFindPortPPC         ,       -624
  66. .set _LVOWaitPortPPC         ,       -630
  67. .set _LVOPutMsgPPC           ,       -636
  68. .set _LVOGetMsgPPC           ,       -642
  69. .set _LVOReplyMsgPPC         ,       -648
  70. .set _LVOFreeAllMem          ,       -654
  71. .set _LVOCopyMemPPC          ,       -660
  72. .set _LVOAllocXMsgPPC        ,       -666
  73. .set _LVOFreeXMsgPPC         ,       -672
  74. .set _LVOPutXMsgPPC          ,       -678
  75. .set _LVOGetSysTimePPC       ,       -684
  76. .set _LVOAddTimePPC          ,       -690
  77. .set _LVOSubTimePPC          ,       -696
  78. .set _LVOCmpTimePPC          ,       -702
  79. .set _LVOSetReplyPortPPC     ,       -708
  80. .set _LVOSnoopTask           ,       -714
  81. .set _LVOEndSnoopTask        ,       -720
  82. .set _LVOGetHALInfo          ,       -726
  83. .set _LVOSetScheduling       ,       -732
  84. .set _LVOFindTaskByID        ,       -738
  85. .set _LVOSetNiceValue        ,       -744
  86. .set _LVOTrySemaphorePPC     ,       -750
  87. .set _LVOAllocPrivateMem     ,       -756    # PRIVATE!
  88. .set _LVOFreePrivateMem      ,       -762    # PRIVATE!
  89. .set _LVOResetCPU            ,       -768    # PRIVATE!
  90. .set _LVONewListPPC          ,       -774
  91. .set _LVOSetExceptPPC        ,       -780
  92. .set _LVOObtainSemaphoreSharedPPC ,  -786
  93. .set _LVOAttemptSemaphoreSharedPPC,  -792
  94. .set _LVOProcurePPC          ,       -798
  95. .set _LVOVacatePPC           ,       -804
  96. .set _LVOCauseInterrupt      ,       -810
  97. .set _LVOCreatePoolPPC       ,       -816
  98. .set _LVODeletePoolPPC       ,       -822
  99. .set _LVOAllocPooledPPC      ,       -828
  100. .set _LVOFreePooledPPC       ,       -834
  101. .set _LVORawDoFmtPPC         ,       -840
  102.  
  103.  
  104. # Useful constants for PPC calls.
  105. #
  106.  
  107.  
  108. .set PP_CODE      ,  0   # Ptr to PPC code
  109. .set PP_OFFSET    ,  4   # Offset to PP_CODE
  110. .set PP_FLAGS     ,  8   # flags (see below)
  111. .set PP_STACKPTR  , 12   # stack pointer
  112. .set PP_STACKSIZE , 16   # stack size
  113. .set PP_REGS      , 20   # 15 registers (d0-a6)  - 15*4
  114. .set PP_FREGS     , 80   # 8 registers (fp0-fp7) - 8*8
  115. .set PP_SIZE      ,176   # Theorically 144, but vbcc use 176 so..
  116.  
  117.  
  118.  
  119. # CallPowerPC - PowerPC.library automatic function call.
  120. #
  121. # Usage: 'CALLPOWERPC AllocMemPPC'
  122. #
  123.  
  124. .macro CALLPOWERPC
  125.   lwz  r3,_PowerPCBase(r2)
  126.   lwz  r0,_LVO\1+2(r3)
  127.   mtlr r0
  128.   blrl
  129. .endm
  130.  
  131.  
  132. # Run68k - Allow launching of regular 68000 sub functions.
  133. #
  134. # Usage: 'RUN68K r5,-198'
  135. #
  136.  
  137. .macro RUN68K
  138.   push    _a6
  139.   subi    local,local,PP_SIZE
  140.   stw     _d0,PP_REGS(local)
  141.   stw     _d1,PP_REGS+1*4(local)
  142.   stw     _d2,PP_REGS+2*4(local)
  143.   stw     _d3,PP_REGS+3*4(local)
  144.   stw     _d4,PP_REGS+4*4(local)
  145.   stw     _d5,PP_REGS+5*4(local)
  146.   stw     _d6,PP_REGS+6*4(local)
  147.   stw     _d7,PP_REGS+7*4(local)
  148.   stw     _a0,PP_REGS+8*4(local)
  149.   stw     _a1,PP_REGS+9*4(local)
  150.   stw     _a2,PP_REGS+10*4(local)
  151.   stw     _a3,PP_REGS+11*4(local)
  152.   stw     _a4,PP_REGS+12*4(local)
  153.   stw     _a5,PP_REGS+13*4(local)
  154.   stw     _a6,PP_REGS+14*4(local)
  155.   stw      \1,PP_CODE(local)        # Set the default base...
  156.   li      _d0,\2                    # ... and it's offset (ie: -526(a6))
  157.   stw     _d0,PP_OFFSET(local)
  158.   clrw    _d0                       # We don't use them, so clear them.
  159.   stw     _d0,PP_FLAGS(local)       #
  160.   stw     _d0,PP_STACKPTR(local)    #
  161.   stw     _d0,PP_STACKSIZE(local)   #
  162.   mr      r4,local
  163.   lwz     r3,_PowerPCBase(r2)
  164.   lwz     r0,-300+2(r3)             # Run68K(r3, r4) - BasePtr, PPArgs
  165.   mtlr    r0
  166.   blrl
  167.   lwz     _d0,PP_REGS(local)        # We only need 'd0'
  168.   addi    local,local,PP_SIZE
  169.   pop     _a6
  170. .endm
  171.  
  172. .endif
  173.  
  174.